The ability to generate a large number of images of an environment from closely spaced viewpoints is a very useful capability. A traditional application of this capability is a flight in the cabin of an aircraft simulator. A more contemporary application is a walk through a virtual environment. In both cases the same scene is displayed from the view of a virtual camera controlled by the user. A different view of a scene must be determined and presented for each different location of the camera. The computation of global illumination effects pertinent to the scene, such as shadows, diffuse and specular inter-reflections, also requires a large number of visibility calculations. A typical approach to this objective is to rely on a computer to repetitively render the scene from the different viewpoints. This approach has two major drawbacks. First, real-time rendering of a complex scene is computationally expensive and usually requires specialized graphics hardware. Second, the rendering time is usually not constant and is dependent on the scene complexity. This problem is particularly critical in simulation and virtual reality applications because of the demand for real-time feedback. Since scene complexity is potentially unbounded, this latter problem will always exist regardless of the available processing power.
A number of approaches have been proposed to address this problem. Most of these approaches use a preprocess technique to compute a subset of the scene visible from a specified viewing region. Only the potentially visible objects are processed in the available time. This approach does not completely solve the problem, however, because there may be viewing regions from which all objects are visible. A different method has been developed to approximate the visibility at a location from adjacent environment maps. In this method, the environment maps are Z-buffered images rendered from a set of discrete viewpoints in a three-dimensional space. Each environment map shows a complete view of the scene from a point. An environment map can take the form of a cubic map, computed by rendering a cube of 90.degree. views radiating from the point. The environment maps are pre-computed and stored with viewpoints arranged in a structured way, such as a three-dimensional lattice. An image from a new viewpoint can be generated by re-sampling the environment maps stored in adjacent locations. The re-sampling process involves rendering the pixels in the environment maps as three-dimensional polygons from the new viewpoint. In this approach, the rendering time is proportional to the environment map resolutions and is independent of the scene complexity. However, the requirement that samples from the maps be regenerated as three-dimensional polygons imposes substantial overhead, and may require special-purpose hardware.
Accordingly, it is desirable to provide a technique for rapidly generating images from nearby viewpoints which is independent of scene complexity and which does not require specialized hardware to implement, to enable a continuous sequence of new images to be generated rapidly on a real-time basis.